package com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api;

import java.util.Collection;
import java.util.Map;

/**
 * Created by lyndon on 2018/5/29.
 */
public interface Path<X> extends Expression<X> {
    Bindable<X> getModel();

    Path<?> getParentPath();

    <Y> Path<Y> get(SingularAttribute<? super X, Y> var1);

    <E, C extends Collection<E>> Expression<C> get(PluralAttribute<X, C, E> var1);

    <K, V, M extends Map<K, V>> Expression<M> get(MapAttribute<X, K, V> var1);

    Expression<Class<? extends X>> type();

    <Y> Path<Y> get(String var1);
}
